﻿Nouvelle version de ModHel'X
----------------------------

Objectifs :
  
  - Être strictement compatible EMF, donc obtenir les classes d'interface et une partie des classes d'implémentation par génération à partir d'un modèle Ecore. Ceci est indispensable pour l'utilisation des outils Eclipse travaillant au niveau modèle (XMI, transformation ...).
  
  - Essayer de trouver des solutions aux problèmes techniques rencontrés lors de l'implémentation du prototype initial.
  
  - Respect d'une stricte séparation interfaces/implémentation (une classe d'implémentation n'utilise que des interfaces).
  
Changements :

  - Seul le MOC peut-être spécialisé, pas les autres concepts de ModHel'X.
  
  - Le modèle Ecore est édité sous forme arborescente (abandon de Papyrus). Il reste à voir si des éditeurs au niveau diagramme (Ecore diagram editor ? voir aussi dans TopCased ...) peuvent être utilisés.
  
  - Implémentation de la sérialisation en XMI des modèles. Pour obtenir une sérialisation XMI simple, il est nécessaire d'avoir une racine d'un arbre de contenance incluant tous les objets. Cette racine est le Model et
    - le ModelOfComputation appartient au Model
    - L'internalModel appartient à l'InterfaceBlock
    - les Relations appartiennent au CompositeBlock
  
  - Suppression des Alias (PinAlias), remplacés par des relations "normales" (Relation)
  
  - Renommage des opérations :
    - initSchedule > initialSchedule
    - interSchedule > postSchedule
    - postSchedule > finalSchedule
  
  - Les Parameter ont disparus. Les Model et Block ont une référence parameters vers une StringToObjectMap et 2 opérations getValueOfParameter / setValueOfParameter. Un paramêtre particulier est modélisé comme un attribut dérivé, et les méthodes correspondantes vont lire ou écrire dans cette map. Voir un exemple pour valueToEmit et timeStep dans DeConstantEmitterImpl (delib).
  
  - Au lieu d'avoir dans un Block une référence au MOC, ce dernier est passé en paramêtre dans les opérations
  
  - Renommage des packages de bibliothèques de blocs : delib au lieu de DE.biblio
   
  - Implémentation du modèle de temps (MARTE) et de la résolution des contraintes de temps :
     - la plateforme collecte toutes les contraintes de temps (voir getTimeOfNextSnapshot qui appelle collectTimeConstraints sur le modèle racine)
     - elle calcule le temps minimal
     - elle donne cette information lors du reset
     - le temps d'un snapshot est un InstantValue de MARTE
     - ... l'implémentation est loin d'être complète
 